import {defineStore} from "pinia";


//返回值：函数，得到容器示例

export const useUserStore = defineStore('user', {
    /**
     * 加入插件后 持久化开启
     */
    persist: true,
    /**
     * 全局状态
     * 函数式 在服务端渲染时避免交叉请求导致数据状态污染
     * 箭头函数 方面TS类型推导
     */
    state: () => {
        return {
            userInfo: {} as IUserInfo,
            token: '',
            refreshToken: '',
        }
    },
    /**
     * 封装计算属性，有缓存功能
     */
    getters: {
        isLogin(state) {
            return state.userInfo.username && state.userInfo.username !== '' && state.userInfo.username !== undefined
        }
    },
    /**
     * 封装业务逻辑，修改state
     */
    actions: {
        setUserInfo(params: any) {
            this.userInfo = params
        },
        setToken(params: any) {
            this.token = params
        },
        setRefreshToken(params: any) {
            this.refreshToken = params
        }
    },
})
